﻿CREATE PROCEDURE [Cucina].[SP_ComandeByTavolo_CL]
	@TavoloAssegnato nvarchar(20)
AS
	DECLARE @DataOraLimite datetime
	SELECT @DataOraLimite = MAX(DataOra)
	FROM Cucina.TavoloReset TR
	WHERE TR.Tavolo = @TavoloAssegnato

	SELECT C.ComandaID, C.OrdineID, C.PuntoDistribuzioneID, C.TavoloAssegnato, C.CodiceComanda, C.Note, C.Sconto, C.DataOra, C.Autore, C.IsCheckInRichiesto, C.IsConsegnaRichiesta, C.IsStampaRemotaRichiesta, PD.PuntoDistribuzioneID AS PuntoDistribuzioneID, PD.Descrizione AS PuntoDistribuzioneDesc, CCI.Autore AS CheckInAutore, CCI.ComandaCheckInID AS CheckInID, CCI.DataOra AS CheckInDataOra, CCI.Esito AS CheckInEsito, CSR.Autore AS StampaRemotaAutore, CSR.ComandaStampaRemotaID AS StampaRemotaID, CSR.DataOra AS StampaRemotaDataOra, CSR.Esito AS StampaRemotaEsito, CSR.Stampante AS StampaRemotaStampante, CC.Autore AS ConsegnaAutore, CC.ComandaConsegnaID AS ConsegnaID, CC.DataOra AS ConsegnaDataOra, CC.Esito AS ConsegnaEsito, C.TimeStampMinCheckIn
	FROM [Cucina].[Comanda] C
	LEFT JOIN [Cucina].[PuntoDistribuzione] PD
		ON C.PuntoDistribuzioneID = PD.PuntoDistribuzioneID
	LEFT JOIN [Cucina].ComandaCheckIn CCI
		ON C.ComandaID = CCI.ComandaID
	LEFT JOIN [Cucina].ComandaStampaRemota CSR
		ON C.ComandaID = CSR.ComandaID
	LEFT JOIN [Cucina].ComandaConsegna CC
		ON C.ComandaID = CC.ComandaID
	WHERE C.TavoloAssegnato = @TavoloAssegnato
	AND (C.DataOra >= @DataOraLimite OR @DataOraLimite IS NULL)
	AND C.ComandaID NOT IN (SELECT ComandaID FROM Cucina.ComandaDeleted)
	AND C.ComandaID NOT IN (SELECT ComandaID FROM Cucina.ComandaLocked)
RETURN 0